home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 February: Tool Chest / Dev.CD Feb 94.toast / Tool Chest / Development Platforms / MPW Related / MPW Interfaces / PInterfaces / SANE.p < prev    next >
Encoding:
Text File  |  1993-09-17  |  6.7 KB  |  256 lines  |  [TEXT/MPS ]

  1. {
  2.     File:        SANE.p
  3.  
  4.     Copyright:    © 1983-1993 by Apple Computer, Inc.
  5.                 All rights reserved.
  6.  
  7.     Version:    System 7.1 for ETO #11
  8.     Created:    Tuesday, March 30, 1993 18:00
  9.  
  10. }
  11.  
  12. {$IFC UNDEFINED UsingIncludes}
  13. {$SETC UsingIncludes := 0}
  14. {$ENDC}
  15.  
  16. {$IFC NOT UsingIncludes}
  17.     UNIT SANE;
  18.     INTERFACE
  19. {$ENDC}
  20.  
  21. {$IFC UNDEFINED UsingSANE}
  22. {$SETC UsingSANE := 1}
  23.  
  24. {$I+}
  25. {$SETC SANEIncludes := UsingIncludes}
  26. {$SETC UsingIncludes := 1}
  27. {$IFC UNDEFINED UsingTypes}
  28. {$I $$Shell(PInterfaces)Types.p}
  29. {$ENDC}
  30. {$SETC UsingIncludes := SANEIncludes}
  31.  
  32. { Elems881 mode set by -d Elems881=true on Pascal command line }
  33.  
  34. {$IFC UNDEFINED Elems881}
  35. {$SETC Elems881 = FALSE}
  36. {$ENDC}
  37.  
  38.  
  39. CONST
  40. {$IFC OPTION(MC68881)}
  41.  
  42. {*======================================================================*
  43.  *    The interface specific to the MC68881 SANE library    *
  44.  *======================================================================*}
  45.  
  46. Inexact = 8;
  47. DivByZero = 16;
  48. Underflow = 32;
  49. Overflow = 64;
  50. Invalid = 128;
  51. CurInex1 = 256;
  52. CurInex2 = 512;
  53. CurDivByZero = 1024;
  54. CurUnderflow = 2048;
  55. CurOverflow = 4096;
  56. CurOpError = 8192;
  57. CurSigNaN = 16384;
  58. CurBSonUnor = 32768;
  59.  
  60.  
  61. {$ELSEC}
  62.  
  63. {*======================================================================*
  64.  *    The interface specific to the software SANE library    *
  65.  *======================================================================*}
  66.  
  67. Invalid = 1;
  68. Underflow = 2;
  69. Overflow = 4;
  70. DivByZero = 8;
  71. Inexact = 16;
  72. IEEEDefaultEnv = 0;     {IEEE-default floating-point environment constant}
  73.  
  74.  
  75. {$ENDC}
  76.  
  77. {*======================================================================*
  78.  *    The common interface for the SANE library     *
  79.  *======================================================================*}
  80.  
  81. DecStrLen = 255;
  82. SigDigLen = 20;         {for 68K; use 28 in 6502 SANE}
  83.  
  84.  
  85. TYPE
  86.  
  87. RelOp = (GreaterThan,LessThan,EqualTo,Unordered);
  88.  
  89. NumClass = (SNaN,QNaN,Infinite,ZeroNum,NormalNum,DenormalNum);
  90.  
  91. RoundDir = (ToNearest,Upward,Downward,TowardZero);
  92.  
  93. RoundPre = (ExtPrecision,DblPrecision,RealPrecision);
  94.  
  95. DecimalKind = (FloatDecimal,FixedDecimal);
  96.  
  97. {$IFC OPTION(MC68881)}
  98.  
  99. {*======================================================================*
  100.  *    The interface specific to the MC68881 SANE library    *
  101.  *======================================================================*}
  102. Exception = LONGINT;
  103.  
  104. Environment = RECORD
  105.     FPCR: LONGINT;
  106.     FPSR: LONGINT;
  107.     END;
  108.  
  109. TrapVector = RECORD
  110.     Unordered: LONGINT;
  111.     Inexact: LONGINT;
  112.     DivByZero: LONGINT;
  113.     Underflow: LONGINT;
  114.     OpError: LONGINT;
  115.     Overflow: LONGINT;
  116.     SigNaN: LONGINT;
  117.     END;
  118.  
  119. {$ELSEC}
  120.  
  121. {*======================================================================*
  122. *  The interface specific to the software SANE library      *
  123. *======================================================================*}
  124.  
  125. Exception = INTEGER;
  126.  
  127. Environment = INTEGER;
  128.  
  129. Extended96 = ARRAY [0..5] OF INTEGER;
  130.  
  131. MiscHaltInfo = RECORD
  132.     HaltExceptions: INTEGER;
  133.     PendingCCR: INTEGER;
  134.     PendingD0: LONGINT;
  135.     END;
  136.  
  137. {$ENDC}
  138.  
  139. {*======================================================================*
  140. *  The common interface for the SANE library    *
  141. *======================================================================*}
  142.  
  143. DecStr = STRING[DecStrLen];
  144.  
  145. DecForm = RECORD
  146.     style: DecimalKind;
  147.     digits: INTEGER;
  148.     END;
  149.  
  150. Decimal = RECORD
  151.     sgn: 0..1;
  152.     exp: INTEGER;
  153.     sig: STRING[SigDigLen];
  154.     END;
  155.  
  156. CStrPtr = ^CHAR;
  157.  
  158.  
  159.  
  160. {$IFC OPTION(MC68881)}
  161.  
  162. { return IEEE default environment }
  163. FUNCTION IEEEDefaultEnv: environment;
  164. PROCEDURE SetTrapVector(Traps: trapvector);
  165. PROCEDURE GetTrapVector(VAR Traps: trapvector);
  166. FUNCTION X96toX80(x: Extended): extended80;
  167. FUNCTION X80toX96(x: extended80): Extended;
  168. {$IFC Elems881 = false}
  169.  
  170. { sine }FUNCTION Sin(x: Extended): Extended;
  171. FUNCTION Cos(x: Extended): Extended;
  172. FUNCTION ArcTan(x: Extended): Extended;
  173. FUNCTION Exp(x: Extended): Extended;
  174. FUNCTION Ln(x: Extended): Extended;
  175. FUNCTION Log2(x: Extended): Extended;
  176. FUNCTION Ln1(x: Extended): Extended;
  177. FUNCTION Exp2(x: Extended): Extended;
  178. FUNCTION Exp1(x: Extended): Extended;
  179. FUNCTION Tan(x: Extended): Extended;
  180. {$ENDC}
  181.  
  182. {$ELSEC}
  183.  
  184. { return halt vector }FUNCTION GetHaltVector: LONGINT;
  185. PROCEDURE SetHaltVector(v: LONGINT);
  186. FUNCTION X96toX80(x: Extended96): Extended;
  187. FUNCTION X80toX96(x: Extended): Extended96;
  188. FUNCTION Log2(x: Extended): Extended;
  189. FUNCTION Ln1(x: Extended): Extended;
  190. FUNCTION Exp2(x: Extended): Extended;
  191. FUNCTION Exp1(x: Extended): Extended;
  192. FUNCTION Tan(x: Extended): Extended;
  193. {$ENDC}
  194.  
  195.  
  196. {*======================================================================*
  197. *  The common interface for the SANE library    *
  198. *======================================================================*}
  199.  
  200. {---------------------------------------------------
  201. * Conversions between numeric binary types.
  202. ---------------------------------------------------}
  203.  
  204. FUNCTION Num2Integer(x: Extended): INTEGER;
  205. FUNCTION Num2Longint(x: Extended): LONGINT;
  206. FUNCTION Num2Real(x: Extended): real;
  207. FUNCTION Num2Double(x: Extended): DOUBLE;
  208. FUNCTION Num2Extended(x: Extended): Extended;
  209. FUNCTION Num2Comp(x: Extended): Comp;
  210. PROCEDURE Num2Dec(f: decform;x: Extended;VAR d: decimal);
  211. FUNCTION Dec2Num(d: decimal): Extended;
  212. PROCEDURE Num2Str(f: decform;x: Extended;VAR s: DecStr);
  213. FUNCTION Str2Num(s: DecStr): Extended;
  214. PROCEDURE Str2Dec(s: DecStr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  215. PROCEDURE CStr2Dec(s: CStrPtr;VAR Index: INTEGER;VAR d: decimal;VAR ValidPrefix: BOOLEAN);
  216. PROCEDURE Dec2Str(f: decform;d: decimal;VAR s: DecStr);
  217. FUNCTION Remainder(x: Extended;y: Extended;VAR quo: INTEGER): Extended;
  218. FUNCTION Rint(x: Extended): Extended;
  219. FUNCTION Scalb(n: INTEGER;x: Extended): Extended;
  220. FUNCTION Logb(x: Extended): Extended;
  221. FUNCTION CopySign(x: Extended;y: Extended): Extended;
  222. FUNCTION NextReal(x: real;y: real): real;
  223. FUNCTION NextDouble(x: DOUBLE;y: DOUBLE): DOUBLE;
  224. FUNCTION NextExtended(x: Extended;y: Extended): Extended;
  225. FUNCTION XpwrI(x: Extended;i: INTEGER): Extended;
  226. FUNCTION XpwrY(x: Extended;y: Extended): Extended;
  227. FUNCTION Compound(r: Extended;n: Extended): Extended;
  228. FUNCTION Annuity(r: Extended;n: Extended): Extended;
  229. FUNCTION RandomX(VAR x: Extended): Extended;
  230. FUNCTION ClassReal(x: real): NumClass;
  231. FUNCTION ClassDouble(x: DOUBLE): NumClass;
  232. FUNCTION ClassComp(x: Comp): NumClass;
  233. FUNCTION ClassExtended(x: Extended): NumClass;
  234. FUNCTION SignNum(x: Extended): INTEGER;
  235. FUNCTION NAN(i: INTEGER): Extended;
  236. PROCEDURE SetException(e: Exception;b: BOOLEAN);
  237. FUNCTION TestException(e: Exception): BOOLEAN;
  238. PROCEDURE SetHalt(e: Exception;b: BOOLEAN);
  239. FUNCTION TestHalt(e: Exception): BOOLEAN;
  240. PROCEDURE SetRound(r: RoundDir);
  241. FUNCTION GetRound: RoundDir;
  242. PROCEDURE SetPrecision(p: RoundPre);
  243. FUNCTION GetPrecision: RoundPre;
  244. PROCEDURE SetEnvironment(e: environment);
  245. PROCEDURE GetEnvironment(VAR e: environment);
  246. PROCEDURE ProcEntry(VAR e: environment);
  247. PROCEDURE ProcExit(e: environment);
  248. FUNCTION Relation(x: Extended;y: Extended): RelOp;
  249.  
  250. {$ENDC}    { UsingSANE }
  251.  
  252. {$IFC NOT UsingIncludes}
  253.     END.
  254. {$ENDC}
  255.  
  256.